Php 去除非字母数字字符并将字符串限制为两个单词
我试图从字符串中去掉非字母数字字符,并将字符串限制为两个单词。i、 e:Php 去除非字母数字字符并将字符串限制为两个单词,php,Php,我试图从字符串中去掉非字母数字字符,并将字符串限制为两个单词。i、 e: foo bar baz => foo-bar boo * test => boo-test te%st_foo => test-foo 到目前为止,我得到了这个: $term = preg_replace('/[^A-Za-z0-9 ]/', '', $term); $words = explode(" ", $term); $generated = strtolower(imp
foo bar baz => foo-bar
boo * test => boo-test
te%st_foo => test-foo
到目前为止,我得到了这个:
$term = preg_replace('/[^A-Za-z0-9 ]/', '', $term);
$words = explode(" ", $term);
$generated = strtolower(implode(" ",array_splice($words,0,2)));
$term = preg_replace('!\s+!', '-', $term);
但在某个地方出了问题,这些是我刚刚拼凑起来的片段,试图得到我想要的结果
问题是字符串中是否有超过1个空格等
感谢您的帮助:)
谢谢首先通过删除多余的空间来规范化字符串,如下所示:
preg_replace('/[ ]+/', ' ', $term);
然后执行其余操作,它将起作用。将多个[空白]空间减少为单个空间使用:
$string = preg_replace("/[ \t\n\r]+/", " ", $string);
在爆炸之前立即执行此操作
$str = preg_replace('/[^a-z]+/is', '-', $str);
$str = trim(str_replace('--', '-', $str), '-');
// now we have array of words
$str = explode('-', $str);
$str = $str[0].'-'.$str[1];
UPD:
<?php
$str = 'foo&*^%#*$&@^ bar asjdhakhsgd';
$str = preg_replace('/[^a-z]+/is', '-', $str);
$str = trim(str_replace('--', '-', $str), '-');
$str = explode('-', $str);
$str = $str[0].'-'.$str[1];
echo $str; // foo-bar
?>
foobarbaz=>foobar
?你能解释一下吗?这似乎是@fredley的一个可能的副本。我想将输出字符串限制为只有两个单词,word1-word2