|
|
|
| Здравствуйте.
Есть код, который позволяет ввести в первое текстовое поле запрос, а во втором выводится ответ.
<?php header('Content-type: text/html; charset=windows-1251')?>
<?
$b = '';
if(isset($_POST['a'])){
$b = $_POST['a'];
}
?>
<?
$s = $b;
$s = str_replace("когда началась Великая Отечественная война", "22 июня 1941 года", $s);
$b = $s;
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<body>
<br>
В первое текстовое поле введите запрос. Нажмите кнопку "отправить".
<br><br>
<form method="post">
<input type='text' size="100" name='a'><br>
<input type='textarea' size="100" name='b' value='<?=$b?>'>
<input type='submit' value="Отправить">
</form>
</body>
</html>
|
Всё прекрасно работает. Можно добавить ещё и этот код:
<?
function check_string($b, $words)
{
foreach($words as $word)
{
if(strpos($b, $word) !== false)
continue;
else
{
return false;
}
}
return true;
}
$words = array('война', 'великая');
if(check_string($b,$words))
$s = $b;
$s = str_replace("какой-то текст", "замена этого текста", $s);
$b = $s;
?>
|
Тоже всё хорошо работает.
Но как задать несколько множественных условий? Т.е. чтобы при наличии в запросе разных слов действовали другие правила замены. | |
|
|
|
|
|
|
|
для: Ярослав82
(17.04.2016 в 15:22)
| | Первые два аргумента функции str_replace могут быть массивами. | |
|
|
|
|
|
|
|
для: confirm
(17.04.2016 в 15:50)
| | А можно какой-нибудь пример использования аргументов в качестве массива?
Что-то вроде этого?
$s = str_replace(array("какой-то текст", "замена этого текста", $s));
|
| |
|
|
|
|
|
|
|
для: Ярослав82
(17.04.2016 в 16:08)
| | Что трудно заглянуть в руководство? | |
|
|
|
|
|
|
|
для: confirm
(18.04.2016 в 13:27)
| | Вот эта часть кода
$aa = array("япония", "франция", "сша");
$s = str_replace($aa, "три страны", $s);
|
заменяет каждое слово из массива на строку замены. Мне же нужно, чтобы все слова из массива выступали в качестве условия (if). Т.е.:
если в строке запроса присутствуют слова "япония", "франция" и "сша", то заменить $search на $replace.
|
Что-то вроде этого:
if $aa = contains (array("япония", "франция", "сша"));
Then
$s = str_replace("одна страна", "три страны", $s);
if $aa = contains (array("япония", "франция"));
Then
$s = str_replace("одна страна", "две страны", $s);
|
Может быть я что-то пропустил в инструкции, но пример такого условия пока не могу найти. | |
|
|
|
|
|
|
|
для: Ярослав82
(18.04.2016 в 23:05)
| | Вряд ли в этом случае str_replace подходящее, скорее str_ireplace, а если условия могут быть более сложными, то preg_replace. | |
|
|
|
|
|
|
|
для: confirm
(19.04.2016 в 13:57)
| | Может есть пример использования str_ireplace или регулярных выражений хотя бы для двух условий? Может всё дело в формах, которые не воспринимают условия? С помощью echo условия срабатывают (пример я приводил), но сразу же. А нужно, чтобы после ввода запроса. И вот здесь-то ничего не происходит. Может проблема с формами, может нужно другое условие, может ошибка в синтаксисе... Не хватает мне опыта разобраться в простой на первый взгляд проблеме. | |
|
|
|
|
|
|
|
для: Ярослав82
(19.04.2016 в 14:54)
| | Изучайте, смотрите примеры, ну в конце концов надо же научится с руководством работать, чтобы уметь среди его набора находить нужное. | |
|
|
|
|
|
|
|
для: Ярослав82
(17.04.2016 в 15:22)
| | Пытаюсь копать дальше.
Этот код хотя и с ошибками (Warning: stristr(): needle is not a string or an integer), но хоть что-то делает - проверяет на наличие слова "yes" и "no" и сразу выводит результат.
<?
$b = '';
if(isset($_POST['a'])){
$b = $_POST['a'];
}
$z = array('yes', 'no');
if(stristr($a, $z) === FALSE) {
echo 'not found';
}
?>
|
Но в таком виде:
<?
$b = '';
if(isset($_POST['a'])){
$b = $_POST['a'];
}
?>
<?
$z = array('yes', 'no');
if(stristr($a, $z) === FALSE) {
$b = 'not found';
}
?>
|
категорически не хочет работать. | |
|
|
|
|
|
|
|
для: Ярослав82
(19.04.2016 в 00:57)
| | честно сказать плохо понял условие задания, а именно непонятно, что на что нужно заменить.
Может так?
<?php
$replace = array(
" Япония " => "одна страна",
" Япония, Франция " => "две страны",
" Япония, Франция, США " => "три страны"
);
echo strtr($text, $replace);
|
| |
|
|
|
|
|
|
|
для: indexer
(19.04.2016 в 03:40)
| | В вашем случае массив используется в качестве замены, а не в качестве условия.
Что-то такое нужно:
При наличии в запросе слов "x1" и "x2" слово "x" заменяется на слово "z".
При наличии в запросе слов "x3" и "x4" слово "x" заменяется на слово "y".
|
Cама по себе замена слов действует отлично, это легко сделать. А вот с условиями никак не могу разобраться. | |
|
|
|
|
|
|
|
для: Ярослав82
(17.04.2016 в 15:22)
| | Вопрос закрыт. | |
|
|
|