배열을 사용할 때 PHP 함수 str_replace
에 몇 가지 문제가 있습니다.
이 메시지가 나타납니다:
$message = strtolower("L rzzo rwldd ty esp mtdsza'd szdepw ty esp opgtw'd dple");
그리고 다음과 같이 str_replace
를 사용하려고 합니다:
$new_message = str_replace(
array('l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k'),
array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'),
$message);
결과는 악마의 자리에 있는 주교의 숙소에 있는 좋은 유리잔
이어야 하지만, 대신 p voos vlpss xn twt qxswop's wosttl xn twt stvxl's stpt
가 나옵니다.
그러나 두 글자만 바꾸려고 하면 잘 바뀝니다:
$new_message = str_replace(array('l','p'), array('a','e'), $message);
문자 l
과 p
는 a
와 e
로 대체됩니다.
둘의 크기가 정확히 같은데 전체 알파벳 배열에서 작동하지 않는 이유는 무엇인가요?
str_replace()는 왼쪽에서 오른쪽으로 바꾸기 때문에 여러 번 바꾸기를 수행할 때 이전에 삽입한 값을 바꿀 수 있습니다.
// A가 B로 바뀌고, B가 C로 바뀌는 식으로 F를 출력합니다... // 마지막으로 왼쪽에서 오른쪽으로 바꾸기 때문에 E가 F로 바뀝니다. search = array('A', 'B', 'C', 'D', 'E'); replace = array('B', 'C', 'D', 'E', 'F');; $replace; subject = 'A'; echo str_replace($search, $replace, $subject);
배열이 있는 str_replace
는 모든 교체를 순차적으로 수행합니다. 대신 strtr
을 사용하여 한 번에 모두 수행합니다:
$new_message = strtr($message, 'lmnopq...', 'abcdef...');
str_replace`보다 쉽고 더 좋습니다:
<?php
$arr = array(
"http://" => "http://www.",
"w" => "W",
"d" => "D");
$word = "http://desiweb.ir";
echo strtr($word,$arr);
?>
strtr
PHP 문서 여기
또는 선택함 오토메이티드 대한 올바른 것으로 교체할 수 있는 경우에는 단어 대신 할 수 있어 대체하십시오 문자 코드를:
$query = "INSERT INTO my_table VALUES (?, ?, ?, ?);";
$values = Array("apple", "oranges", "mangos", "papayas");
foreach (array_fill(0, count($values), '?') as $key => $wildcard) {
$query = substr_replace($query, '"'.$values[$key].'"', strpos($query, $wildcard), strlen($wildcard));
}
echo $query;
데모 있습니다. http://sandbox.onlinephpfunctions.com/code/56de88aef7eece3d199d57a863974b84a7224fd7
이 경우 단순 텍스트 수정표시 계시한하나님께 스테이징할 기존 앵커, 기존 앵커 url 관심용 재장착합니다 주기표시 먼저 스왑이란 아웃해야 스테이징된 표시자는.
"' $ text = & # 39. 로렘 입숨 는 단순히 텍스트 검색 (http://google.com/) 에 의해 발견된? q = 로렘 < 더미, a href = https://www.mozilla.org/en-us/firefox/> firefox< /a>;; ,,, /a> Safari< > " < a href = https://www.apple.com/safari/" 또는 https://www.google.com/chrome/ 브라우저.
우선 기존 앵커 교체 후, 각 수신기마다 표시자가 https://partner. 교체품을 스테이징합니다 태그뿐 스왑이란 아웃해야 남은 링크. 링크에 사용될 제대로 인코딩입니다. 링크 떨어져 있지 않은 경우, 콘텐츠 등 주변 후행 " .". 그들은 이 기간 https://partner. 포함됩니다. 링크가 제대로 만들어지지 않는 인코딩되지 텍스트 처리 문제를 가장 잘 알고 있을 때 사용할 수 없는, 그래서 이 틀렸다니까 혼합됨 HTML.
예: http://google.com/i, m,complicate-d/index.html 예: (https://www.google.com/chrome/), t = 123 123&? 예: http://google.com/? q = & # 39;. 로렌코드 (& # 39, <, a href = ", http://google.com, http://google.com, > " /a>, & # 39 <;) # 39 .&. & # 39;;
기존 링크 수신기마다 표시자가 복귀시킴 // = $ 링크스토어 어레이입니다 (); $ text = preg_replace_callback (& # 39; / (<, a.*? a>) / # 39, 함수 ($ 일치) 사용 (&, $ 링크스토어) {$ 키 = & # 39, linkStore& # 39 스카운트 .& & # 39 ($ 링크스토어) # 39;;;; [$ key] = $ $ 링크스토어 해당되어서는 [0]; $ 반품하십시오 주요. }, $ 텍스트).
나머지 대체하십시오 앵커 (anchor) 태그 함께 url // preg_replace_callback text = $ (" / (http https ftp ftps) \:\/\/ [a-zA-Z0-9-.] +. [z 는 za] {2.3} (\/\s *)? /", 함수 ($ 일치) 사용 (&, $ 링크스토어) {반품하십시오 & # 39, & # 39 a href = " <;;). $ # 39, & # 39 > " .& 해당되어서는 [0],. # 39, & # 39$ 해당되어서는 [0] .& /a> <;;; }, $ 텍스트).
당초 함께 복귀시킴 https://partner. 표시자는 // $ text = str_replace (array_keys array_values ($ 링크스토어), $ ($ 링크스토어), 텍스트);
에코 & # 39, & # 39$ 텍스트;;;; < pre>. "'