문자열 출력에서 캐리지 리턴을 제거하려면 어떻게 해야 합니까?
워드프레스를 CMS로 사용하고 있으며, Google Map 스크립트에서 정보 창을 채우기 위해 사용자 필드를 입력하려고 합니다.이것을 사용하여 ID를 선택하고 커스텀 필드에서 내용을 가져옵니다.
커스텀 필드에 스크립트를 망가뜨리는html이 없는 한 정상적으로 동작합니다.
htmlspecialchar와 htmlentity를 살펴보았지만, 모든 것을 제거하는 대신, 계속 작동하고 html이 손상되지 않도록 하고 싶습니다.좋은 의견이라도 있나?저는 PHP에 익숙하지 않기 때문에 어떤 조언이라도 해주시면 감사하겠습니다.
시간이 좀 지나도 나는 여전히 이것에 대한 좋은 해결책을 찾을 수 없다.Dead Medic에서 esc_js를 사용할 것을 제안했습니다.
렌더링 대신 실제 HTML 코드를 모두 출력했습니다.
nickfs에게 감사드리며, 그 솔루션이 조금 더 낫다고 생각합니다만, 출력에 캐리지 리턴이 있으면 스크립트가 파손되기 때문에, 이것은 CMS에 있어서 그다지 좋지 않습니다.
또 다른 것은 트림 기능을 사용하는 것입니다.출력에 \r이 없는 한 현재 동작하고 있습니다.$snip 문자열, mapExcerpt 필드는 반환의 출처입니다.
<?php $post_id = 207; // Wordpress Post ID
$my_post = get_post($post_id);
$mapTitle = $my_post->post_title;
$mapIMG = get_post_meta($post_id, 'mapImage', true);
$snip = get_post_meta($post_id, 'mapExcerpt', true);
$lat = get_post_meta($post_id, 'lat', true);
$long = get_post_meta($post_id, 'long', true);
$pass_to = '<div class="span-8"><div class="mapTitle">'.$mapTitle.'</div><div class="mapContent">'.$snip.'</div></div>';
$trimmed = trim($pass_to, " \r.");
?>
var point = new GLatLng('<?php echo $lat; $lat; ?>','<?php echo $long; $long; ?>');
var marker = createMarker(point,"<?php echo $mapTitle; $mapTitle; ?>", '<?php echo addslashes($trimmed); ?>');
map.addOverlay(marker);
이걸 어떻게 해낼 수 있을지 다른 아이디어는 없나요?
당신의 문제를 완전히 이해하지는 못하지만, 질문의 제목에 대한 답은 매우 간단합니다.
$snip = str_replace('.', '', $snip); // remove dots
$snip = str_replace(' ', '', $snip); // remove spaces
$snip = str_replace("\t", '', $snip); // remove tabs
$snip = str_replace("\n", '', $snip); // remove new lines
$snip = str_replace("\r", '', $snip); // remove carriage returns
또는 올인원 솔루션:
$snip = str_replace(array('.', ' ', "\n", "\t", "\r"), '', $snip);
정규 표현도 사용할 수 있습니다.
$snip = preg_replace('~[[:cntrl:]]~', '', $snip); // remove all control chars
$snip = preg_replace('~[.[:cntrl:]]~', '', $snip); // above + dots
$snip = preg_replace('~[.[:cntrl:][:space:]]~', '', $snip); // above + spaces
아직 사용하셔야 합니다.addslashes()출력하다$snipJavascript에 있습니다.
저는 항상 이것을 골치 아픈 반품품을 없애기 위해 사용합니다.
$string = str_replace("\r\n", "\n", $string); // windows -> unix
$string = str_replace("\r", "\n", $string); // remaining -> unix
모든 유형의 새 선 기호를 제거해야 하는 경우(utf8).
$dataWithoutCarrierReturn = preg_replace('/\R/', '', $inData);
이것을 Javascript에 넣기 때문에 Javascript 문자열은 이스케이프해야 합니다. addslashes()효과가 있을 거야
JSON 인코딩을 시도해 보세요.저는 PHP에서 Javascript로 데이터를 보낼 때 항상 그렇게 합니다.줄바꿈을 포함한 대부분의 부호화 문제를 해결합니다.
WP 자체 사용esc_js()JavaScript 문자열의 따옴표 및 줄 바꿈을 이스케이프합니다.
이 솔루션만이 나에게 효과가 있었습니다.
$dataWithoutCarrierReturn = preg_replace('/[\x0D]/', '', $inData);
언급URL : https://stackoverflow.com/questions/3059091/how-to-remove-carriage-returns-from-output-of-string
'source' 카테고리의 다른 글
| 게시물을 클릭하면 WordPress의 데이터베이스에서 쿼리된 값이 전송되도록 하는 방법 (0) | 2023.02.07 |
|---|---|
| Wordpress 검색 결과를 표시하는 방법 (0) | 2023.02.07 |
| 멀티프로세싱풀: map_async와 imap의 차이점은 무엇입니까? (0) | 2023.02.04 |
| npm은 패키지를 어디에 설치합니까? (0) | 2023.02.04 |
| SciPy와 NumPy의 관계 (0) | 2023.02.04 |