Требуется помощь Подскажите php

blaikly

Premium Lite
Регистрация
13 Янв 2016
Сообщения
74
Реакции
99
Может кто-то подсказать как вырезать/удалить определенное слово с текста на сайте.
Например парсится текст, выводится так:
"У меня есть ощущение, что двигаемся вперед очень уверенно, вперед но при этом опаздываем на один-два шага. На сегодняшний день уверен, что впереди в Халле будут еще пять новичков до конца трансферного окна."
Как можно удалить слово "вперед" и "впереди"? Текст будет большим, там много разных слов удалять..
 

У тебя текст, который ты спарсил помещается в переменную (условно, $text)
И потом просто пишешь:
$text = str_replace('вперед', '', $text);
И в переменной $text у тебя уже будет новый текст с вырезанным словом "вперед"
 

Ой, только что до конца дочитал. Выше это пример для замены одного слова. А для замены нескольких слов:
$text = str_replace(['впереди', 'вперед'], '', $text);

И тут через запятую можешь указывать любые слова для замены
 

Ой, только что до конца дочитал. Выше это пример для замены одного слова. А для замены нескольких слов:
$text = str_replace(['впереди', 'вперед'], '', $text);

И тут через за
с помощью регулярных выражений, либо стандартной функцией str_replace

пятую можешь указывать любые слова для замены
Спасибо ребят, но не срабатывает, правда я нашел еще несколько регулярок для очистки стоп слов, ни одна не работает, поищу еще)
 

Спасибо ребят, но не срабатывает, правда я нашел еще несколько регулярок для очистки стоп слов, ни одна не работает, поищу еще)
Так а что именно ты делал, что не сработало? Скинь код полностью
 

Так а что именно ты делал, что не сработало? Скинь код полностью
Вот три разных
<?php
$text = str_replace(['впереди', 'вперед'], '', $text);?>

$text = preg_replace('#' . preg_quote($_GET['вперед']) . '|#i', '', $text);

$str = 'привет, вперед, бла бла, пока - впереди';
$str = str_replace(array('вперед: ', 'впереди'), '', $str);
$mail = trim(strrchr($str, ' '));

только с другими словами
 

Вот три разных
<?php
$text = str_replace(['впереди', 'вперед'], '', $text);?>

$text = preg_replace('#' . preg_quote($_GET['вперед']) . '|#i', '', $text);

$str = 'привет, вперед, бла бла, пока - впереди';
$str = str_replace(array('вперед: ', 'впереди'), '', $str);
$mail = trim(strrchr($str, ' '));

только с другими словами
Так а самый первый раз, $text где определяется?
Это же я писал из расчёта на то, что $text уже определена, и в неё помещен исходный текст
 

Вот так только получается
<?php $text = str_replace(['впереди', 'вперед'], '', $text='У меня есть ощущение, что двигаемся вперед очень уверенно, вперед но при этом опаздываем на один-два шага. На сегодняшний день уверен, что впереди в Халле будут еще пять новичков до конца трансферного окна.');?>
вывожу
<?php echo $text; ?>

А если $text не определена можно обрезать как-то?
 

Вот так только получается
<?php $text = str_replace(['впереди', 'вперед'], '', $text='У меня есть ощущение, что двигаемся вперед очень уверенно, вперед но при этом опаздываем на один-два шага. На сегодняшний день уверен, что впереди в Халле будут еще пять новичков до конца трансферного окна.');?>
вывожу
<?php echo $text; ?>

А если $text не определена можно обрезать как-то?
Вообще, я бы так сделал, для удобства вынес бы всё в переменные. И потом в массив добавлял бы нужные слова для замены.
Насчёт этого ничего не понял "А если $text не определена можно обрезать как-то?". Строки можно обрезать, выводить строки желаемой длинны, с определенного символа функцией substr
http://php.net/manual/ru/function.substr.php

$replacementText = 'У меня есть ощущение, что двигаемся вперед очень уверенно, вперед но при этом опаздываем на один-два шага. На сегодняшний день уверен, что впереди в Халле будут еще пять новичков до конца трансферного окна.';
$replacementWords = array('впереди', 'вперед');

$text = str_replace($replacementWords, '', $replacementText);

echo $text;
 

Вообще, я бы так сделал, для удобства вынес бы всё в переменные. И потом в массив добавлял бы нужные слова для замены.
Насчёт этого ничего не понял "А если $text не определена можно обрезать как-то?".

Ну я вот так сперва делал, <?php $text = str_replace(['впереди', 'вперед'], '', $text='<?php echo $texts; ?>');?>
Где <?php echo $texts; ?> это спаршеный текст, вот он и не выводился, хорошо спасибо, сейчас попробую
 

Ну я вот так сперва делал, <?php $text = str_replace(['впереди', 'вперед'], '', $text='<?php echo $texts; ?>');?>
Где <?php echo $texts; ?> это спаршеный текст, вот он и не выводился, хорошо спасибо, сейчас попробую
Я конечно не знаю, что у тебя за php такой
Но сейчас попробую указать на ошибки, если смогу доступно объяснить:
1. Ты сначала открываешь php-теги <?php
2. Потом ты переменной $text присваиваешь результат работы str_replace
$text = str_replace();?>
3. Функции str_replace ты передаешь
первый аргумент - массив (это правильно) , //['впереди', 'вперед']
вторым аргументов ты на что производится замена, пустая строка (это правильно)
третьим аргументов ты передаешь php-теги (хз зачем, ведь теги уже были открыты а начале документа, это ошибка), и ещё, ты передаешь своей текст, при этом присваивая этот текст переменной, что является действием полностью лишенным логики (не критично, но неправильно).

Переменной, в основном, есть смысл присваивать значение ДО того, как значение передаётся аргументом функции, либо, когда переменной присваивается результат работы функции.
Но это теряет всякий смысл, когда ты присваиваешь переменной значение, а потом это же значение копи-пастишь. Например, определяешь переменную до вызова функции, записываешь в переменную нужный текст, а потом просто, постоянно, где нужно вставляешь, хоть в функцию, хоть выводишь, где удобно.

И я так заметил, что ты любишь закрывать php-теги. Но зачем? Когда у тебя в php файле только логика, то вообще не стоит закрывать теги.
Теги закрываются когда нужно вывести чистый html без вспомогательных функций, но тут вообще этого не требуется, для вывода используй echo
 

Обратите внимание

Назад
Сверху