Moin,
weiß jemand, wie ich aus einem String per regex immer die zusammengehörigen Worte bekomme?
Das Prinzip:
- ein Wort kann im String unmaskiert eingefügt werden
- zusammenhängende Worte müssen per "" oder '' maskiert werden
Das Problem sieht man bei /* result ... */,
wie es aufteilen sollte bei /* expected ... */
PHP
$str = '"aWord" "two or more words" \'one\' \'and 2\' andWithout';
if((strpos($str, '"') !== false)or (strpos($str, '\'') !== false)){
for(
$words = preg_split('/["\']/', $str), $words_num = count($words), $i = 0;
$i < $words_num;
$words[$i] = trim($words[$i]), $i++
);
}else{
$words = preg_split('/\s+/', $str);
}
print_r($words);
/* result
Array
(
[0] =>
[1] => aWord
[2] =>
[3] => two or more words
[4] =>
[5] => one
[6] =>
[7] => and 2
[8] => andWithout
)
*/
/* expected:
Array
(
[1] => aWord
[3] => two or more words
[5] => one
[7] => and 2
[8] => andWithout
)
*/
Alles anzeigen