PHP функция в Javascript: сканировать строку и добавлять слова в массив - PullRequest
0 голосов
/ 06 декабря 2011

Я пытаюсь преобразовать эту функцию PHP в JavaScript:

function sanitize_words($string,$limit=false) {
    preg_match_all("/\p{L}[\p{L}\p{Mn}\p{Pd}'\x{2019}]{1,}/u",$string,$matches,PREG_PATTERN_ORDER);
    return $matches[0];
}

В основном, эта строка принимает:

$string = "Why hello, how are you?"
$array = sanitize_words($string);

и преобразует его в массив:

$array[0] = 'Why';
$array[1] = 'hello';
$array[2] = 'how';
$array[3] = 'are';
$array[4] = 'you';

Он прекрасно работает на php, но я понятия не имею, как реализовать его на javascript, поскольку в phpjs.org нет preg_match_all. Есть идеи? Спасибо.

Ответы [ 3 ]

1 голос
/ 06 декабря 2011

Вам не нужно регулярное выражение, split будет делать в javascript.

<script type="text/javascript">
var myString = "zero one two three four";

var mySplitResult = myString.split(" ");

for(i = 0; i < mySplitResult.length; i++){
    document.write("<br /> Element " + i + " = " + mySplitResult[i]); 
}
</script>

Отображает:

Element 0 = zero
Element 1 = one
Element 2 = two
Element 3 = three
Element 4 = four 

В качестве примечания, в вашем сценарии PHP, если все вывы хотите создать массив слов, который вы должны использовать explode(), он имеет МНОГО меньше накладных расходов:

<?php
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
// to remove non alpha-numeric chars, and still less costly
$pizza = preg_replace('/[^a-zA-Z0-9\s]/', '', $pizza);
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
?>
1 голос
/ 06 декабря 2011

Используйте метод String.match, с флагом g (global), установленным на RegEx. \w эквивалентно [a-zA-Z0-9_]. Если вы действительно хотите имитировать свой текущий шаблон, используйте эту страницу в качестве ссылки для преобразования свойств символов в шаблон JavaScript.

function sanitize_words($string) {
    return $string.match(/\w+/g);
}
1 голос
/ 06 декабря 2011

Функция JavaScript split() создаст массив из любой строки, используя разделитель.В этом случае пробел .

var str = "Why hello, how are you?".split(" ")
alert(str[0]) // = "Why"
...