많은 결과가 발견되었지만 어떤 이유로 든 저에게 맞지 않습니다! 나는 preg_replace
을 정규식과 함께 시도했으나 html_entity_decode
,하지만 좋지는 않습니다.PHP의 문자열에서 특수 HTML 문자를 제거하십시오.
예를 들어 해시 기호가있는 단어를 선택하고 싶습니다. 예 : #WORD
, 잘 작동하지만 때로는 해시 표시가 ‏#WORD
으로 읽히고 누락됩니다.
예 : This is a normal #hash_mark but #this_isn't
가 나타나는 :
내가 중복으로 표시된 질문에 해시 마크 접두사 '~(?<=\s|^)#[^\s#]++~um'
와 단어를 선택하는 데 사용하는 정규식은 이미지에서 볼 수 있듯이 유니 코드 텍스트의 경우 대답이 작동하지 않습니다.
코드는 무엇을 필요있어하는 것은 정상적인 #
function remove_special_char($sentence){
return preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s','',$sentence);
}
echo remove_special_char("hello مرحبا привет שלום");
출력으로 ‏#
를 교체 아니라 유니 코드 텍스트를 포함한 모든 특수 문자를 제거하지 :
hello
음 ... 당신의 정규식 해시 * 공백 앞에 * 일치에서 촬영되었습니다
다음의 정규식을 사용했다. 그 해시는 공백으로 시작하지 않습니다. 그럴까요? 정규식이 다른 것과 일치해야합니까? – deceze
'~ (? <= \ s |^| ) # [^ \ s #] ++ ~ um''과 같은 긍정적 인 룩백 어설 션에 오른쪽에서 왼쪽으로 마커를 추가 할 수 있습니다. – Phylogenesis
@Phylogenesis 해결책은 동일하지만 그가 만난 문제는 육안으로 인식하기가 다소 어려웠습니다. 이러한 문자는 동일한 시각적으로 렌더링 되었기 때문입니다. –