preg match - PHP preg_match for multi language -
preg_match( '/^[-a-za-z0-9\p{han}]+$/u', $name) this work chinese character, need check languages. suggestions?
i tried below command. works language but, doesn't work all.
preg_match('/^[-a-za-z0-9\p{l} ]+$/u', $name) edit
the exact requirement be: if string contains symbol, replace _; while allowing multi language content.
the exact requirement be: if string contains symbol, replace
_; while allowing multi language content.
so, need use preg_replace replaces non-overlapping occurrences of pattern defined replacement string, , pattern match symbol \p{s}. not forget u unicode modifier.
preg_replace('~\p{s}~u', '_', $s); now, if plan match , remove punctuation chars (posix character class [:punct:] includes both punctuation , symbols) exception of -, may use
preg_replace('~(?!-)[[:punct:]]~u', '_', $s); see regex demo.
here, (?!-) negative lookahead restrict more generic [[:punct:]] pattern matches punctuation , symbol chars forcing regex engine exclude - matching.
you may add more exceptions way if necessary.
Comments
Post a Comment